public class DecimalLED extends SevenSegmentLED {
public int t;
public void setDigit(int d)
{
t = d;
boolean[][] s = new boolean[11][7];
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 7; j++) s[i][j] = true;
s[1][0] = s[1][5] = s[1][6] = s[1][4] = s[1][3] = false;
s[2][5] = s[2][2] = false;
s[3][5] = s[3][4] = false;
s[4][0] = s[4][3] = s[4][4] = false;
s[5][1] = s[5][4] = false;
s[6][1] = false;
s[7][5] = s[7][6] = s[7][4] =s[7][3]= false;
s[9][4] = false;
s[0][6] = false;
for(int k = 0; k<7; k++) s[10][k] = false;
if (d>=0&&d<=9) super.setSegments(s[d]);
else super.setSegments(s[10]);
}
}
public int getDigit() {
return t;
}
}
import jlab.JLabIO;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class Lab9 extends Applet implements Runnable {
private DecimalLED[] display = new DecimalLED[3];
public void init() {
for (int i = display.length - 1; i >= 0; i--) {
display[i] = new DecimalLED();
add(display[i]);
display[i].setSize(40, 80);
}
validate();
}
public void start() {
(new Thread(this)).start();
}
public void run() {
int k;
display[0].setDigit(0);
while (true) {
for (int i = 0; i < display.length; i++) {
k = Math.max(display[i].getDigit(), 0);
display[i].setDigit((++k) % 10);
if (k < 10) break;
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {}
}
}
public static void main(String[] args) {
Frame frame = new Frame("Lab9 : 7 segments");
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
);
Lab9 applet = new Lab9();
frame.add(applet, BorderLayout.CENTER);
frame.setSize(200, 120);
frame.setVisible(true);
applet.init();
applet.start();
}
}
import java.awt.*;
public class SevenSegmentLED extends Canvas {
private boolean[] segments;
private static final int[] NUMPOINTS = {5, 5, 7, 5, 5, 5, 5};
private static final int[][][] SEGMENTS = {
{{5, 35, 30, 10, 5, 0, 0}, {5, 5, 10, 10, 5, 0, 0}},
{{35, 35, 30, 30, 35, 0, 0}, {8, 37, 34, 13, 8, 0, 0}},
{{35, 35, 30, 30, 35, 0, 0}, {43, 72, 67, 46, 43, 0, 0}},
{{5, 35, 30, 10, 5, 0, 0}, {75, 75, 70, 70, 75, 0, 0}},
{{5, 5, 10, 10, 5, 0, 0}, {43, 72, 67, 46, 43, 0, 0}},
{{5, 5, 10, 10, 5, 0, 0}, {8, 37, 34, 13, 8, 0, 0}},
{{10, 30, 35, 30, 10, 5, 10}, {37, 37, 40, 43, 43, 40, 37}}
};
public SevenSegmentLED() {
setBackground(new Color(0, 0, 0));
setForeground(new Color(0, 255, 0));
}
public void setSegments(boolean[] s) {
if (s != null) {
segments = new boolean[s.length];
for (int i = 0; i < s.length; i++) {
segments[i] = s[i];
}
repaint();
}
}
public void paint(Graphics g) {
double scalex = (double) bounds().width / 40.0;
double scaley = (double) bounds().height / 80.0;
Color f = getForeground();
g.setColor(f);
for (int i = 0; i < 7; i++) {
if (segments != null && i < segments.length && segments[i]) {
int[][] points = new int[2][NUMPOINTS[i]];
for (int j = 0; j < NUMPOINTS[i]; j++) {
points[0][j] = (int) (SEGMENTS[i][0][j] * scalex);
points[1][j] = (int) (SEGMENTS[i][1][j] * scaley);
}
g.fillPolygon(points[0], points[1], NUMPOINTS[i]);
}
}
}
}
|